#!/usr/bin/python3
# _*_ coding: utf-8 _*_
#
# Copyright (C) 2024 - 2024 heihieyouheihei, Inc. All Rights Reserved 
#
# @Time    : 2024/9/9 18:08
# @Author  : Yuyun
# @File    : K次取反后最大化的数组和.py
# @IDE     : PyCharm

"""
给定一个整数数组 A，我们只能用以下方法修改该数组：我们选择某个索引 i 并将 A[i] 替换为 -A[i]，然后总共重复这个过程 K 次。（我们可以多次选择同一个索引 i。）
以这种方式修改数组后，返回数组可能的最大和。

示例 1：
输入：A = [4,2,3], K = 1
输出：5
解释：选择索引 (1) ，然后 A 变为 [4,-2,3]。
示例 2：
输入：A = [3,-1,0,2], K = 3
输出：6
解释：选择索引 (1, 2, 2) ，然后 A 变为 [3,1,0,2]。
示例 3：
输入：A = [2,-3,-1,5,-4], K = 2
输出：13
解释：选择索引 (1, 4) ，然后 A 变为 [2,3,-1,5,4]。
提示：

1 <= A.length <= 10000
1 <= K <= 10000
-100 <= A[i] <= 100
#算法公开课
"""
class Solution:
    """
    贪心策略
    局部最优：最小负数取反1次；若全是正数，最小正数取反k次
    全局最优：执行操作后，和最大
    """
    def invert_k(self, nums, k):
        #   按绝对值从大到小排序
        nums.sort(key=lambda x:abs(x), reverse=True)
        length = len(nums)
        for i in range(length):
            if nums[i] < 0:
                nums[i] = -nums[i]
                k -= 1
            #   若遍历至最后一位，剩余操作直接对最后一位进行操作
            if i == length - 1:
                #   剩余的次数为奇数，最小值取反；次数为偶数则不管
                if k % 2 == 1:
                    nums[i] = -nums[i]

        return sum(nums)

if __name__ == "__main__":
    nums = list(map(int, input().split(',')))
    k = int(input())
    solution = Solution()
    result = solution.invert_k(nums, k)
    print(result)